; Prusa i3 bear dual magnetic nozzle config file for dc42 Duet wifi firmware ; JanTec.nl 31-01-2021 for reprap V3.1 ; Version for/with sensorless homing ; The design of the e36D hotend cooling is desastrous. the 40mm fan needs to get air through an angled corner to the fins of the cooling block and causes jamming of PLA filament. ; Any setting I tried fails, except 0.3 mm layer height, flow as low as possible to keep the extruder from slipping and prevent that the filament gets compacted just above the nozzle . ; Heat creep causes PLA to get jammed in the pipe that connects nozzle and heatblock with the finned cooling block above. getting some flow down helps a lot in preventing this. ; Getting flow down can be done in 2 ways: Less flow, and lower printing speed at lower layer height. The last optioen will increase printing time. ; I added a great cooling down end.g file and this also helps a lot to prevent clogging. I call it from Cura with M0 ; Playing around with retraction did not help to prevent clogging, but is is anyway always needed to get the tip of the filament away from the heatblock at a Tool change ! ; Cura does this with 16mm (standard settings) fast retraction immediately on Tool change! ; I played around with different settings that do help but it is really different per type of heat/cool block/ heat throat combination. ; Last status: I installed an E3D 'open' cold block with titanium heat throat and this seems to work great, BUT coooling propoerly down is absolutely neccessary otherwise it will clog anyway. ; Heat creep and clogging is still possible if you have a shutdown os when the fan on the cold block fauils. ; Setting the standby temperature to way lower than printing temp did also help some.; ; The combination of settings and hardware finally paid off: No more clogging on PLA! Will try PETG later (2021-March 10th) ; Only real problem remaining is that Tool1 (right extruder) is giving incoming strings coming from the left that hang on any printed object. ; It can easily be removed but needs to be eliminated. Itv is an every layer problem and I identified that the right extruder starts pumping filament directly after being parked in the wait poition at beginning the journey towards the object. ; I tried putting the head up0 with a relative Z directly after the tool wait status, and in the tool wait status BUT tghe automatic return that the machine does (or Cuyra probably causes this) ; makes the right tool hit the object at the new layer height so all pushed filament will hang automatically where it hits. And- it is quite a lot of filament, a length of around 1-2 cm. (3/8-3/4 inch) ; I have ruled out any E setting in any tool change file, and checked Cura also. Borth Tools have identical settings. and on th left Toool-0 there is absolutely NO filament pushed on Tool change. ; Changing the PLA filaments recursively is my next trial and error approach... ;M574 The first step in sensorless homing configuration is to change your endstop type to "sensorless" in config.g. To change your endstop, you must change the M574 command in config.g. ; For example, M574 X Y S3 sets the endstops to sensorless homing. This is required. ;M915 The next thing in this step is to include the following M915 command in config.g. M915 X Y R0 F0. ; This sets up the last main command needed for sensorless homing for each axes can be done individually, e.g. in my build only X. ;M906 The next step is to configure your motor amps for a baseline in config.g. Try to use as low a current as possible (preferably below 500mA if possible on X and Y). ; This is done through editing X and Y of M906. For example, set X and Y to 400mA in M906. ; Prologue and comms section----------------------------------------------------------------------------------------------- M111 S0 ; Debug off M550 PDual Bear ; Machine name (can be anything you like) M551 Preprap ; Machine password M552 S1 ; WIFI ON M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xBD ; MAC Address M552 P192.168.178.24 ; IP address (0 = use DHCP) M554 P192.168.178.1 ; Gateway M553 P255.255.255.0 ; Netmask M555 P2 ; Set output to look like Marlin M575 P1 B57600 S1 ; Comms parameters for PanelDue ; Axis to driver mapping ----------------------------------------------------------------------------------------------------- M584 X0 Y1 Z2 E3:4 ; two Z motors connected to 1 driver outputs Z and 2 extruders M671 X-25:355 Y0:0 S0.5 ; leadscrews at left (connected to Z) and right (connected to Z) of X axis ; Xnn:nn:nn... List of between 2 and 4 X coordinates of the leadscrews that drive the Z axis or the bed levelling screws ; Ynn:nn:nn... List of between 2 and 4 Y coordinates of the leadscrews that drive the Z axis or the bed levelling screws ; Snn Maximum correction allowed for each leadscrew in mm (optional, default 1.0) ; Pnnn Pitch of the bed levelling screws (not used when bed levelling using independently-driven leadscrews). Defaults to 0.5mm which is correct for M3 bed levelling screws. ; Fnn Fudge factor, default 1.0 ; M671 must come later in config.g than any M667 or M669 command. M208 X-32:250 Y-34:245 ; X carriage moves from -5 to 205, Y bed goes from 0 to 200, this is set for the probe only now.. M208 Z185 ; Set Z axis maxima (adjust to suit your machine) M208 Z0 S1 ; set Z axis minimum (adjust to make X=0 and Y=0 the edge of the bed) M569 P0 S0 ; Drive 0 | X stepper M569 P1 S1 ; Drive 1 | Y Stepper M569 P2 S0 ; Drive 2 | Z Stepper 2 serial Z motors M569 P3 S1 ; Drive 3 | Extruder T0 M569 P4 S1 ; Drive 4 | Extruder T1 ; Axis and motor configuration ----------------------------------------------------------------------------------------------- M350 X16 Y16 Z16 E16 I1 ; Set 16x microstepping with interpolation M906 X1000 Y800 Z1000 E600:600 I40 ; Set motor currents (mA) and put idle current to 50% (was 60%) M201 X800 Y800 Z100 E1000 ; Accelerations (mm/s^2) M203 X15000 Y10000 Z600 E3600 ; Maximum speeds (mm/min) M566 X600 Y600 Z30 E20 ; Maximum jerk speeds mm/minute M92 X80 Y80 Z1600 ; Set axis steps/mm x en y was 80 (20 teeth) Z was 400 for gross threaded screws and needs be 1600 for the very narrow ones M92 E420:420 ; Set extruder steps per mm was 420 M574 Y1 S1 P"ystop" ; Y min active high endstop switch M574 Z1 S1 P"zstop" ; Z min active high endstop switch M574 X1 S3 ; Sensorless homing on X axes low end M574 X2 S3 ; Sensorless homing on X axes also on high end ; Snnn 1 = switch-type (eg microswitch) endstop input, 2 = Z probe (when used to home an axis other than Z), 3 = single motor load detection, 4 = multiple motor load detection (see Notes). ; Xnnn Position of X endstop: 0 = none, 1 = low end, 2 = high end. ; Ynnn Position of Y endstop: 0 = none, 1 = low end, 2 = high end. ; Znnn Position of Z endstop: 0 = none, 1 = low end, 2 = high end. ; P"pin_name" Defines the pin name(s) that the endstop(s) for the specified axis are connected to, see Pin Names. Needed when S=1. May need ! before pin name to invert signal, or ^ to enable the pullup resistor, for example on the Duex expansion board. ; This command must be later in config.g than the M584 command that creates additional axes, or axes that have multiple motors and endstops. M915 P0 S3 F0 R0 ; Setting for sensorless homing on P0 = X axes ; Pnnn:nnn:... Drive number(s) to configure X,Y,Z,U,V,W,A,B,C Axes to configure (alternative to using the P parameter) ; Snnn Stall detection threshold (-64 to +63, values below -10 not recommended). Lower values make stall detection more sensitive. S3 is a good starting point for many motors. ; Fn Stall detection filter mode, 1 = filtered (one reading per 4 full steps), 0 = unfiltered (default, 1 reading per full step) ; Hnnn (optional) Minimum motor full steps per second for stall detection to be considered reliable, default 200 ; Tnnn (optional) Coolstep control register, 16-bit unsigned integer ; Rn Action to take on detecting a stall from any of these drivers: 0 = no action (default), 1 = just log it, 2 = pause print, 3 = pause print, execute /sys/rehome.g, and resume print G21 ; Work in millimetres G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves ; Z probe section, probe is inductive NPN 5Volt------------------------------------------------------------------------------- M558 P5 C"^!zprobe.in" H5 R0.2 A5 B1 F120 T3000 ; Probe connected to Z probe IN pin G31 P250 X28 Y18 Z1.7 ; Higher Z value = lower nozzle!! was 0.55 needs 1.0mm lower after screwing out the probe. This might be even a bit too high.. ;P nnn Z probe type =9 for BLtouch and 5 for inductive probe or any other similar one. use 8 for non-filtered ;C New parameter C specifies the input pin and the optional modulation pin. This parameter is mandatory, except for probe type 0 ;(manual probing) and 10 (Z motor stall detection). ;! Invert the input by prefixing the input pin (C parameter) with ! character, when using an NPN output inductive or capacitive sensor or ;using an NO switch (not recommended, use a NC switch instead). ;^ The pullup resistor on the Z probe input is disabled by default. Enable it by prefixing the input pin (C parameter) with the ^ character. ;Enable pullup resistor with ^ if using Duet 2, running RRF3, using the Z probe input pin, and the probe type is a switch or BLTouch. ;Z probe types 4, 6 and 7 are no longer supported. Instead, use type 5 (filtered digital) or 8 (unfiltered digital) and use the C parameter to specify the input. ;Note, if your Z probe is connected to the Z endstop input, in RRF 3.0 on Duet 2 boards only (not in RRF 3.01 and later, and not in RRF 3.0 on Duet 3), ;that input is by default pre-assigned to be used by the Z endstop, so you must free it up first. ;Only one Type 2 probe can be configured, and if using Duet 3 + expansion or tool boards, it must be connected to the Duet 3 main board. ;F nnn Feed rate (i.e. probing speed, mm/min) ;H nnn Dive height (mm). When using mesh bed compensation or running G30 commands with specified XY coordinates (for example from the bed.g file), ;the firmware moves the Z probe to this height above where it expects the bed to be before commencing probing. The maximum depth of probing from ;this position is twice the dive height. A large dive height will tolerate a very uneven bed or poor calibration. ;A small dive height will make probing faster, because the Z probe has less distance to travel before reaching the bed. Default value if omitted is 5mm. ;I nnn Invert (I1) or do not invert (I0, default) the Z probe reading (RepRapFirmware 1.16 and later) ;R nnn Z probe recovery time before the probing move is started , default zero (seconds) (RepRapFirmware 1.17 and later). ;This is to allow the probe to settle after executing a travel move to the coordinates to probe. ;T nnn Travel speed to and between probe points (mm/min) ;A nnn Maximum number of times to probe each point, default 1. Maximum, as of 2.03, is 31. Setting M558 A parameter to anything >31 set it to 0 instead of to 31 ;S nnn Tolerance when probing multiple times, default 0.03mm ;B n If 1, turn off all heaters while probing, default (B0) leaves heaters on. (RepRapFirmware 1.21 and later) ;C n Endstop input number when the probe type is P4, default 3 (RepRapFirmware 2.02/1.23 and later) ;All of the above for RepRapFirmware 2.x relates to RepRapFirmware 3, except the following: ;K New optional parameter K selects the Z probe number. If there is no K parameter then the current Z probe number is used. ; The current Z probe number is 0 at startup. You can ignore this parameter if you have only one Z probe. ; Heater and thermistor section----------------------------------------------------------------------------------------------- M308 S0 P"bed_temp" Y"thermistor" T100000 B3950 ; define bed temperature sensor 0 M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; sensor 1 M950 H1 C"e0heat" T1 ; create heater and map sensor 1 M308 S2 P"e1temp" Y"thermistor" T100000 B4138 ; sensor 2 M950 H2 C"e1heat" T2 ; create heater and map sensor 2 M950 H0 C"bed_heat" T0 ; heater 0 uses the bed_heat pin, sensor 0 M140 H0 ; the bed heater is heater 0 M301 H1 P10 I0.10 D100 ;T0.50 ;S1.0 ; PID settings for extruder 0 M301 H2 P10 I0.10 D100 ;T0.50 ;S1.0 ; PID settings for extruder 1 M570 S35000 ; Increase to allow extra heating time if needed ; Electro Magnets and other GPIO's ----------------------------------------------------------------------------------------------- M950 P4 C"exp.heater4" Q150 ; Create heater4 PWM for left electromagnet and T0 M950 P5 C"exp.heater5" Q150 ; Create heater5 PWM for right hand electromagnet and T1 M950 P6 C"exp.heater6" Q500 ; Create heater6 PWM for LED top light M98 P/sys/ledflash.g ; Perform execution of ledflash.g in specified directory ; Fans----------------------------------------------------------------------------------------------- M950 F0 C"fan0" Q500 ; LEFT TOOL OBJECT FAN. create fan0 on pin fan0 and set its frequency to 500 M106 P0 S0 ;H1 ; P0 is connected to the left hotend with heater 1. This is tool 0. Thermostatic control is turned off since this will be regulated in the Slicer's print settings M950 F1 C"fan1" Q500 ; BOTH TOOLS HEATSINK FANS. create fan1 on pin fan1 for both the cooling blocks (without ptfe tubes) on pin fan1 and set its frequency to 500 M106 P1 S1 H1:2 T35 ; set toolfans value. S can be set to 0.7 to keep the noise down. Thermostatic control is turned on for heATER 1 AND/OR 2 M950 F2 C"fan2" Q500 ; RIGHT HAND TOOL OBJECT FAN. create fan2 on pinfan2 for the 2nd extruder and set its frequency M106 P2 S0 ;H2 ; P2 is connected to the right hand hotend with heater 2. This is tool 1. Thermostatic control is turned off since this will be regulated in the Slicer's print settings ; Hnn Heater number ; Fnn Fan number ; Jnn Input pin number (RRF 3.01RC2 and later only) ; Pnn or Snn Output/servo pin number. Sservo pins are just GpOut pins with a different default PWM frequency. ; C"name" Pin name(s) and optional inversion status, see Pin Names. Pin name "nil" frees up the pin. A leading '!' character inverts the input or output. A leading '^' character enables the pullup resistor. The '^' and '!' characters may be placed in either order. ; Qnn PWM frequency in Hz. Valid range: 0-65535, default: 500. (optional) ; T Temperature sensor number, required only when creating a heater. See M308. ; example: M950 F3 C"heater2" Q100 ;[] Fan 3 is connected to heater 2 pin, PWM at 100Hz ; Pnnn Fan number (optional, defaults to 0). (In RRF_3 relates to the fan number created by M950, NOT the fan pin number on the board) ; Snnn Fan speed (0 to 255 or 0.0 to 1.0)) ; Innn Invert PWM (I1), disable fan (I-1), or normal mode (I0, default) (not supported in RRF_3, use M950) ; Fnnn Fan PWM frequency (not supported in RRF_3, use M950) ; Lnnn Set the minimum fan speed (0 to 255 or 0.0 to 1.0) when a non-zero fan speed is requested. ; Xnnn Set the maximum fan speed (0 to 255 or 0.0 to 1.0) ; Bnnn Blip time - fan will be run at full PWM for this number of seconds when started from standstill. Default is B0.1 which means that there is a 100ms burst after starting the fan. ; Hnn:nn:nn... Enable thermostatic mode and select heaters monitored. H-1 disables thermostatic mode. (In RRF_3 relates to the sensor number(s) created by M308, not the temperature sensor pin number on the board) ; Rnnn Restore fan speed to the value it has when the print was paused (R1) or the last time the fan speed was set and no P parameter was provided (R2). ; Tnnn or Tnn:nn Set thermostatic mode trigger temperature, or temperature control range ; C"name" Set custom name for this fan (supported in RRF >= 2.01) ; Ann Logical pin number that this fan is connected to (supported in RRF >= 2.02) (not supported in RRF_3, use M950) ; example: M106 P1 T45 S0.7 H1:2 ;[] sets the second fan to a thermostatic fan for heaters 1 and 2 (e.g. the extruder heaters in a dual-nozzle machine) such that the fan will be on at 70% PWM when either hot end is at or above 45C. ; Tool definition section; NO TOOL Settings needed in slicer! Delta spacing nozzles: Y=0.53 AND X=-0.33, Z=0.1 ; theoretically Y should be 0.5 cm and X should be 0, Z close to zero as well if all has been printed well and the construction with magnets = 100% perfect M563 P0 D0 H1 ; Define tool 0 to use extruder drive 0 and heater 1 G10 P0 S0 R0 X-27.5 Y10 Z0 ; Z value going LOWER is nozzle goes HIGHER here; Set tool 0 operating and standby ; Set Tool 0 to fixed values X-27.5, Y10 Z0 versus probe measurement ; and change only Tool 1, ; this makes life a little easiertemperatures and Z offset as oppose to the probed Z M563 P1 D1 H2 ; Define tool 1 for extruder drive 1 and heater 2 G10 P1 S0 R0 X26.95 Y11 Z0 ; X is almost OK at 26.98, T1 must be a very tiny bit to the left . Y is 11. ; Set tool 1 operating and standby temperatures and Z offset as oppose to the probed Z ; Example: Tool 1 Y was 10.73 and needed to go UP 0.2mm (-0.2) = 10.53 ; Z more positive means lower nozle here. ; ;M207 S2 R-0.5 Z2 F3000 ;set firmware retraction. S is the amount in mm. F is the Feed rate mm/min (divide by /60 to get mm/sec). ;Optionally one could also have R (additional, or less if negative, length on unretract) and Z (additional Z lift in mm) ; Filament monitoring -------------------------------------------------------------------------------------- M591 D0 P2 C"e0_stop" S1 ; filament monitor left extruder (serial, NC between pin 1 and 3) connected to e0_stop M591 D1 P2 C"e1_stop" S1 ; filament monitor right hand extruder (serial, NC between pin 1 and 3) connected to e1_stop ; Dnn Extruder drive number (0, 1, 2...), ; Pnn Type of sensor: ; 0=none ; 1=simple sensor (high signal when filament present) ; 2=simple sensor (low signal when filament present) ; 3=Duet3D rotating magnet sensor ; 4=Duet3D rotating magnet sensor with microswitch ; 5 = Duet3D laser sensor ; 6 = Duet3D laser sensor with microswitch ; 7 = pulse-generating sensor ; C"name" Pin name the filament sensor is connected to (RRF_3 only), see Pin Names ; Sn 0 = disable filament monitoring (default), 1 = enable filament monitoring when printing from SD card. Supported for all filament sensor types in firmwares 1.21.1 and in 2.0 and later. In firmware 1.21 this parameter is not supported for sensor types 1 and 2. Filament monitors accumulate calibration data (where applicable) even when filament monitoring is disabled. ;Mesh grid for bed probing----------------------------------------------------------------------------------- M557 X30:250 Y30:220 S50 ; probe from X=60 to 180, Y=20 to 180mm with a mesh spacing of 95mm ; Epilogue ;*** If you are using axis compensation, put the figures in the following command ;M556 S78 X0 Y0 Z0 ; Axis compensation here M501 ; execute config_override.g T0:1 ; select first hot end T0 and note the 2nd one at T1